package com.ls.nio;

import java.nio.ByteBuffer;

/**
 * 一、缓冲区（Buffer）:在java NIO中负责数据的存取。缓冲区就是数组。 用于存储 不同数据类型的数据 根据数据类型的不同（boolean除外），提供对应类型的缓冲区：
 * ByteBuffer - 最常用的 CharBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer
 * 上述的缓冲区的管理方式几乎是一致的 ，通过allocate()获取缓冲区 二、缓冲区里面的存取数据的两个核心方法： put()：存入数据到缓冲区中 get()：获取缓冲区中的数据
 * 四、缓冲区中的核心属性 capacity：容量，表示缓冲区中最大存储数据的容量，一旦声明了则不能改变。 limit：表示缓冲区中可以操作数据的大小。（limit后数据是不可以进行读写的）
 * position：位置，表示缓冲区正在操作数据的位置。 mark：标记，表示记录当前position的位置，可以通过reset()恢复到mark的位置
 */
public class TestBuffer {
    public static void main(String[] args) {
        String str = "abcde";
        ByteBuffer buf = ByteBuffer.allocate(1024);
        buf.put(str.getBytes());
        buf.flip();

        byte[] bytes = new byte[buf.limit()];
        buf.get(bytes,0,2);

        System.out.println(new String(bytes,0,2));
    }
}
